﻿// The Bottom of a Graph POJ - 2553.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


/*
https://vjudge.net/problem/POJ-2553

我们将使用图论中的以下（标准）定义。设 V 是一个非空的有限集合，其元素称为顶点（或节点）。
设 E 是笛卡尔积 V×V 的子集，其元素称为边。那么 G=(V,E) 称为有向图。
设 n 为正整数，设 p=(e1,...,en) 为长度为 n 的边 ei∈E 序列，对于顶点序列 (v1,...,vn+1)，ei=(vi,vi+1)。
那么在 G 中，p 被称为从顶点 v1 到顶点 vn+1 的路径，我们称 vn+1 可以从 v1 到达，写作 (v1→vn+1)。
下面是一些新定义。图 G=(V,E) 中的节点 v 被称为汇，如果 G 中的每个节点 w 都可以从 v 到达，那么 v 也可以从 w 到达。
图的底部是所有汇节点的子集，即 bottom(G)={v∈V|∀w∈V:(v→w)⇒(w→v)} 。您必须计算某些图形的底部。
输入
输入包含多个测试用例，每个测试用例对应一个有向图 G。每个测试用例以一个整数 v 开始，表示 G=(V,E) 的顶点数，顶点将由集合 V={1,...v} 中的整数标识。可以假设 1<=v<=5000 。接下来是一个非负整数 e，然后是 e 对顶点标识符 v1,w1,...,ve,we，其含义是 (vi,wi)∈E。除了这些顶点标识符对之外，没有其他的边。最后一个测试用例后跟一个零。
输出
对于每个测试用例，在一行中输出指定图形的底部。为此，按排序打印所有作为汇的节点的编号，并用一个空格分隔。如果底部为空，则打印空行。
*/
int main()
{
    std::cout << "Hello World!\n";
}

 